home *** CD-ROM | disk | FTP | other *** search
Wrap
VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX" Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX" Object = "{38911DA0-E448-11D0-84A3-00DD01104159}#1.1#0"; "COMCT332.OCX" Begin VB.Form frmMain Caption = "DexterVB" ClientHeight = 5565 ClientLeft = 60 ClientTop = 645 ClientWidth = 8610 Icon = "frmMain.frx":0000 LinkTopic = "Form1" LockControls = -1 'True ScaleHeight = 5565 ScaleWidth = 8610 WhatsThisButton = -1 'True WhatsThisHelp = -1 'True Begin VB.Timer Timer1 Left = 9300 Top = 1140 End Begin MSComctlLib.ImageList ctrlMainToolbarImageListHot Left = 9300 Top = 480 _ExtentX = 1005 _ExtentY = 1005 BackColor = -2147483643 ImageWidth = 16 ImageHeight = 15 MaskColor = 16711935 _Version = 393216 BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} NumListImages = 10 BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":030A Key = "" EndProperty BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":062C Key = "" EndProperty BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":094E Key = "" EndProperty BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":0C70 Key = "" EndProperty BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":0F62 Key = "" EndProperty BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":1254 Key = "" EndProperty BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":1546 Key = "" EndProperty BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":1838 Key = "" EndProperty BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":1B2A Key = "" EndProperty BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":1E1C Key = "" EndProperty EndProperty End Begin ComCtl3.CoolBar ctrlCoolBar Height = 405 Left = 0 TabIndex = 3 Top = 0 Width = 8580 _ExtentX = 15134 _ExtentY = 714 BandCount = 2 FixedOrder = -1 'True BandBorders = 0 'False OLEDropMode = 1 MousePointer = 1 _CBWidth = 8580 _CBHeight = 405 _Version = "6.7.8988" MinHeight1 = 345 NewRow1 = 0 'False Child2 = "tbMain" MinHeight2 = 315 Width2 = 5730 NewRow2 = 0 'False AllowVertical2 = 0 'False Begin MSComctlLib.Toolbar tbMain Height = 315 Left = 165 TabIndex = 4 Top = 45 Width = 8325 _ExtentX = 14684 _ExtentY = 556 ButtonWidth = 609 ButtonHeight = 556 AllowCustomize = 0 'False Wrappable = 0 'False Style = 1 ImageList = "ctrlMainToolbarImageList" HotImageList = "ctrlMainToolbarImageListHot" _Version = 393216 BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} NumButtons = 11 BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "New" Description = "New TimeLine" Object.ToolTipText = "Create A New Timeline" ImageIndex = 1 EndProperty BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "Open" Description = "Open Timeline" Object.ToolTipText = "Open An Existing Timeline File" ImageIndex = 2 EndProperty BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "Save" Description = "Save Timeline" Object.ToolTipText = "Save The Timeline" ImageIndex = 3 EndProperty BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} Style = 3 EndProperty BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "Rewind" Description = "btnRewind" Object.ToolTipText = "Rewind To Beginning Of TimeLine" ImageIndex = 4 EndProperty BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "SeekBackward" Description = "btnSeekBack" Object.ToolTipText = "Seek Backwards One Second At A Time" ImageIndex = 5 EndProperty BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "Play" Description = "Play" Object.ToolTipText = "Play Currently Loaded Timeline" ImageIndex = 6 Style = 2 EndProperty BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "Pause" Description = "Pause" Object.ToolTipText = "Pauses Playback" ImageIndex = 7 Style = 2 EndProperty BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "Stop" Description = "Stop" Object.ToolTipText = "Stops Playback" ImageIndex = 8 Style = 2 EndProperty BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "SeekForward" Description = "btnSeekFwd" Object.ToolTipText = "Seek Forward One Second At A Time" ImageIndex = 9 EndProperty BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} Key = "FastForward" Description = "btnffwd" Object.ToolTipText = "Go To End Of TimeLine" ImageIndex = 10 EndProperty EndProperty OLEDropMode = 1 End End Begin MSComctlLib.ListView lstViewInfo Height = 4745 Left = 2475 TabIndex = 2 Top = 450 Width = 6120 _ExtentX = 10795 _ExtentY = 8361 View = 3 LabelWrap = -1 'True HideSelection = -1 'True OLEDropMode = 1 FlatScrollBar = -1 'True FullRowSelect = -1 'True HotTracking = -1 'True HoverSelection = -1 'True _Version = 393217 ForeColor = -2147483640 BackColor = -2147483643 Appearance = 1 OLEDropMode = 1 NumItems = 0 End Begin MSComctlLib.TreeView tvwSimpleTree Height = 4745 Left = 0 TabIndex = 1 Top = 450 Width = 2415 _ExtentX = 4260 _ExtentY = 8361 _Version = 393217 HideSelection = 0 'False Style = 7 FullRowSelect = -1 'True HotTracking = -1 'True ImageList = "ctrlTreeViewImageList" Appearance = 1 OLEDropMode = 1 End Begin MSComctlLib.ImageList ctrlMainToolbarImageList Left = 8685 Top = 480 _ExtentX = 1005 _ExtentY = 1005 BackColor = -2147483643 ImageWidth = 16 ImageHeight = 15 MaskColor = 16711935 _Version = 393216 BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} NumListImages = 10 BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":210E Key = "new" EndProperty BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":2430 Key = "open" EndProperty BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":2752 Key = "save" EndProperty BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":2A74 Key = "rewind" EndProperty BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":2D66 Key = "seekbackward" EndProperty BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":3058 Key = "play" EndProperty BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":334A Key = "pause" EndProperty BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":363C Key = "stop" EndProperty BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":392E Key = "seekforward" EndProperty BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":3C20 Key = "fastforward" EndProperty EndProperty End Begin MSComctlLib.StatusBar sbStatus Align = 2 'Align Bottom Height = 345 Left = 0 TabIndex = 0 Top = 5220 Width = 8610 _ExtentX = 15187 _ExtentY = 609 Style = 1 _Version = 393216 BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} EndProperty OLEDropMode = 1 End Begin MSComDlg.CommonDialog ctrlCommonDialog Left = 8700 Top = 1080 _ExtentX = 847 _ExtentY = 847 _Version = 393216 End Begin MSComctlLib.ImageList ctrlTreeViewImageList Left = 9900 Top = 480 _ExtentX = 1005 _ExtentY = 1005 BackColor = -2147483643 ImageWidth = 16 ImageHeight = 16 MaskColor = 12632256 _Version = 393216 BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} NumListImages = 3 BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":3F12 Key = "" EndProperty BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":422C Key = "" EndProperty BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} Picture = "frmMain.frx":4546 Key = "" EndProperty EndProperty End Begin VB.Menu mnuFile Caption = "&File" NegotiatePosition= 1 'Left Begin VB.Menu mnuFileNew Caption = "&New" Begin VB.Menu mnuFileNewTimeline Caption = "Timeline" End End Begin VB.Menu mnuFileOpen Caption = "&Open" Shortcut = ^O End Begin VB.Menu mnuFileSeptum Caption = "-" End Begin VB.Menu mnuFileSaveAs Caption = "Save &As" End Begin VB.Menu mnuFileSeptum0 Caption = "-" End Begin VB.Menu mnuFileExit Caption = "&Exit" End End Begin VB.Menu mnuTimeline Caption = "TimeLine" Visible = 0 'False Begin VB.Menu mnuTimeLinePlay Caption = "Play" End Begin VB.Menu mnuTimeLineStop Caption = "Stop" End Begin VB.Menu mnuTimeLinePause Caption = "Pause" End Begin VB.Menu mnuTimelineSeptum Caption = "-" End Begin VB.Menu mnuTimelineExpand Caption = "Expand" End Begin VB.Menu mnuTimelineCollapse Caption = "Collapse" End Begin VB.Menu mnuTimelineSeptum2 Caption = "-" End Begin VB.Menu mnuTimeLineEdit Caption = "Edit" End Begin VB.Menu mnuTimeLineInsertGroup Caption = "Insert Group" End Begin VB.Menu mnuTimelineSeptum3 Caption = "-" End Begin VB.Menu mnuTimeLineRenderTimeLine Caption = "Render Timeline" End Begin VB.Menu mnuTimeLineClearRenderEngine Caption = "ClearRenderEngine" End End Begin VB.Menu mnuTrack Caption = "Track" Visible = 0 'False Begin VB.Menu mnuTrackEdit Caption = "Edit" End Begin VB.Menu mnuTrackDelete Caption = "Delete" End Begin VB.Menu mnuTrackSeptum Caption = "-" End Begin VB.Menu mnuTrackExpand Caption = "Expand" End Begin VB.Menu mnuTrackCollapse Caption = "Collapse" End Begin VB.Menu mnuTrackSeptum2 Caption = "-" End Begin VB.Menu mnuTrackAddClip Caption = "Add Clip" End Begin VB.Menu mnuTrackAddEffect Caption = "Add Effect" End Begin VB.Menu mnuTrackAddTransition Caption = "Add Transition" End End Begin VB.Menu mnuGroup Caption = "group" Visible = 0 'False Begin VB.Menu mnuGroupEdit Caption = "Edit" End Begin VB.Menu mnuGroupDelete Caption = "Delete" End Begin VB.Menu mnuGroupSeptum Caption = "-" End Begin VB.Menu mnuGroupExpand Caption = "Expand" End Begin VB.Menu mnuGroupCollapse Caption = "Collapse" End Begin VB.Menu mnuGroupSeptum2 Caption = "-" End Begin VB.Menu mnuGroupAddComp Caption = "Add Composition" End Begin VB.Menu mnuGroupAddTrack Caption = "Add Track" End Begin VB.Menu mnuGroupAddTransition Caption = "Add Transition" End Begin VB.Menu mnuGroupAddEffect Caption = "Add Effect" End End Begin VB.Menu mnuComp Caption = "Comp" Visible = 0 'False Begin VB.Menu mnuCompEdit Caption = "Edit" End Begin VB.Menu mnuCompDelete Caption = "Delete" End Begin VB.Menu mnuCompSeptum Caption = "-" End Begin VB.Menu mnuCompExpand Caption = "Expand" End Begin VB.Menu mnuCompCollapse Caption = "Collapse" End Begin VB.Menu mnuCompSeptum2 Caption = "-" End Begin VB.Menu mnuCompAddTrack Caption = "Add Track" End Begin VB.Menu mnuCompAddEffect Caption = "Add Effect" End Begin VB.Menu mnuCompAddTransition Caption = "Add Transition" End Begin VB.Menu mnuCompAddComp Caption = "Add Composition" End End Begin VB.Menu mnuClip Caption = "Clip" Visible = 0 'False Begin VB.Menu mnuClipEdit Caption = "Edit" End Begin VB.Menu mnuClipDelete Caption = "Delete" End Begin VB.Menu mnuClipSeptum Caption = "-" End Begin VB.Menu mnuClipExpand Caption = "Expand" End Begin VB.Menu mnuClipCollapse Caption = "Collapse" End End Begin VB.Menu mnuTrans Caption = "Trans" Visible = 0 'False Begin VB.Menu mnuTransEdit Caption = "Edit" End Begin VB.Menu mnuTransDelete Caption = "Delete" End Begin VB.Menu mnuTransSeptum Caption = "-" End Begin VB.Menu mnuTransExpand Caption = "Expand" End Begin VB.Menu mnuTransCollapse Caption = "Collapse" End End Begin VB.Menu mnuEffect Caption = "Effect" Visible = 0 'False Begin VB.Menu mnuEffectEdit Caption = "Edit" End Begin VB.Menu mnuEffectDelete Caption = "Delete" End Begin VB.Menu mnuEffectSeptum Caption = "-" End Begin VB.Menu mnuEffectExpand Caption = "Expand" End Begin VB.Menu mnuEffectCollapse Caption = "Collapse" End End Begin VB.Menu mnuHelp Caption = "&Help" NegotiatePosition= 3 'Right Begin VB.Menu mnuHelpAbout Caption = "&About" End End Attribute VB_Name = "frmMain" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False '******************************************************************************* '* This is a part of the Microsoft DXSDK Code Samples. '* Copyright (C) 1999-2000 Microsoft Corporation. '* All rights reserved. '* This source code is only intended as a supplement to '* Microsoft Development Tools and/or SDK documentation. '* See these sources for detailed information regarding the '* Microsoft samples programs. '******************************************************************************* Option Explicit Option Base 0 Option Compare Text 'module-level drag indicator Private m_boolDrag As Boolean 'returns true if the user is moving the ide septum divided bar ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- FORM EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: Form_Activate ' * procedure description: Occurs when a form becomes the active window. ' * ' ****************************************************************************************************************************** Private Sub Form_Activate() On Local Error GoTo ErrLine Call AppActivate(App.Title, 0) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_GotFocus ' * procedure description: Occurs when an object receives the focus. ' * ' ****************************************************************************************************************************** Private Sub Form_GotFocus() On Local Error GoTo ErrLine 'set focus to the treeview tvwSimpleTree.SetFocus 'if a node has not been selected set the selected node to root If tvwSimpleTree.Nodes.Count > 0 Then If Not tvwSimpleTree.SelectedItem Is Nothing Then _ Set tvwSimpleTree.SelectedItem = tvwSimpleTree.Nodes(1) End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_Initialize ' * procedure description: Occurs when an application creates an instance of a Form, MDIForm, or class. ' * ' ****************************************************************************************************************************** Private Sub Form_Initialize() On Local Error GoTo ErrLine 'initalize module-level variable(s) Set gbl_colNormalEnum = New Collection Set gbl_objQuartzVB = New VBQuartzHelper Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_Load ' * procedure description: Occurs when a form is loaded. ' * ' ****************************************************************************************************************************** Private Sub Form_Load() On Local Error GoTo ErrLine 'set the listview to report view 'and append the column header(s) lstViewInfo.View = lvwReport lstViewInfo.ColumnHeaders.Add , "Parameter", _ "Parameter", (lstViewInfo.Width / 2) - 50 lstViewInfo.ColumnHeaders.Add , "Value", "Value", (lstViewInfo.Width / 2) - 50 'assign the width of the column header(s) If lstViewInfo.ColumnHeaders.Count > 0 Then lstViewInfo.ColumnHeaders(1).Width = lstViewInfo.Width * 0.2 If lstViewInfo.ColumnHeaders(2).Width <> _ (lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width) Then _ lstViewInfo.ColumnHeaders(2).Width = _ (lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width) End If 'ensure the listview has zero items If lstViewInfo.ListItems.Count <> 0 Then _ lstViewInfo.ListItems.Clear 'update the text on the statusbar sbStatus.SimpleText = "Ready" 'update the button(s) With tbMain.Buttons .Item("New").Enabled = True .Item("Open").Enabled = True .Item("Save").Enabled = False .Item("Play").Enabled = False .Item("Pause").Enabled = False .Item("Stop").Enabled = False .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuFileSaveAs.Enabled = False mnuTimeLinePlay.Enabled = False mnuTimeLineStop.Enabled = False mnuTimeLinePause.Enabled = False mnuTimeLineRenderTimeLine.Enabled = False mnuTimeLineClearRenderEngine.Enabled = False Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_MouseDown ' * procedure description: Occurs when the user presses the mouse button while an object has the focus. ' * ' ****************************************************************************************************************************** Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'check if we are in the septum If X > Me.Controls("tvwSimpleTree").Width And X < Me.Controls("lstViewInfo").Left Then If Y > Me.Controls("tbMain").Height And Y < Me.Controls("sbStatus").Top Then 'we are hovering over the septum bar.. If Button = 1 Then m_boolDrag = True If Me.BackColor <> vbBlack Then Me.BackColor = vbBlack End If Exit Sub End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_MouseMove ' * procedure description: Occurs when the user moves the mouse. ' * ' ****************************************************************************************************************************** Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'check if we are in the septum; and proceed to set the mousepointer If X > Me.Controls("tvwSimpleTree").Width And X < Me.Controls("lstViewInfo").Left Then If Y > Me.Controls("tbMain").Height And Y < Me.Controls("sbStatus").Top Then 'we are hovering over the septum bar.. Me.MousePointer = 9 Else 'otherwise reset Me.MousePointer = vbDefault Me.BackColor = &H8000000F End If End If 'if we are in 'drag mode' then resize the control(s) If m_boolDrag = True And Button = 1 Then If X > 65 And X < Me.ScaleWidth - 65 Then Me.Controls("tvwSimpleTree").Width = X Call Form_Resize End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_MouseUp ' * procedure description: Occurs when the user releases the mouse button while an object has the focus. ' * ' ****************************************************************************************************************************** Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'check if we are in the septum If X > Me.Controls("tvwSimpleTree").Width And X < Me.Controls("lstViewInfo").Left Then If Y > Me.Controls("tbMain").Height And Y < Me.Controls("sbStatus").Top Then 'we are hovering over the septum bar.. If Button = 1 Then m_boolDrag = False If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F End If Exit Sub End If Else 'reset the mousepointer & septum color If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F If Me.MousePointer <> vbDefault Then Me.MousePointer = vbDefault End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_OLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'pass to the application drag drop handler Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_OLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub Form_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) On Local Error GoTo ErrLine 'pass to the application drag over handler Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_QueryUnload ' * procedure description: Occurs before a form or application closes. ' * ' ****************************************************************************************************************************** Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim frm As Form On Local Error GoTo ErrLine Select Case UnloadMode Case vbFormControlMenu '0 The user chose the Close command from the Control menu on the form. For Each frm In Forms frm.Move Screen.Width * -8, Screen.Height * -8 frm.Visible = False: Unload frm Next Case vbFormCode '1 The Unload statement is invoked from code. Exit Sub Case vbAppWindows '2 The current Microsoft Windows operating environment session is ending. For Each frm In Forms frm.Move Screen.Width * -8, Screen.Height * -8 frm.Visible = False: Unload frm Next Case vbAppTaskManager '3 The Microsoft Windows Task Manager is closing the application. For Each frm In Forms frm.Move Screen.Width * -8, Screen.Height * -8 frm.Visible = False: Unload frm Next End Case vbFormMDIForm '4 An MDI child form is closing because the MDI form is closing. Exit Sub Case vbFormOwner '5 A form is closing because its owner is closing For Each frm In Forms frm.Move Screen.Width * -8, Screen.Height * -8 frm.Visible = False: Unload frm Next End Select Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_Resize ' * procedure description: Occurs when a form is first displayed or the size of an object changes. ' * ' ****************************************************************************************************************************** Private Sub Form_Resize() Dim Septum As Single Dim InternalTop As Single Dim InternalHeight As Single On Local Error GoTo ErrLine Septum = 65 'assign the septum a specified width If Me.Controls("ctrlCoolBar").Visible = True And Controls("sbStatus").Visible = True Then 'position the coolbar If Me.Controls("ctrlCoolBar").Top <> Me.ScaleTop Then Me.Controls("ctrlCoolBar").Top = Me.ScaleTop If Me.Controls("ctrlCoolBar").Left <> Me.ScaleLeft Then Me.Controls("ctrlCoolBar").Left = Me.ScaleLeft If Me.Controls("ctrlCoolBar").Width <> Me.ScaleWidth Then Me.Controls("ctrlCoolBar").Width = Me.ScaleWidth 'get the internal measurement(s) InternalTop = Me.ScaleTop + Me.Controls("ctrlCoolBar").Height InternalHeight = Me.ScaleHeight - (Me.Controls("ctrlCoolBar").Height + Me.Controls("sbStatus").Height) 'verify that the measurement(s) are valid If InternalTop < 0 Then InternalTop = 0 If InternalHeight < 0 Then InternalHeight = 0 ElseIf Me.Controls("ctrlCoolBar").Visible = True And Controls("sbStatus").Visible = False Then 'position the coolbar If Me.Controls("ctrlCoolBar").Top <> Me.ScaleTop Then Me.Controls("ctrlCoolBar").Top = Me.ScaleTop If Me.Controls("ctrlCoolBar").Left <> Me.ScaleLeft Then Me.Controls("ctrlCoolBar").Left = Me.ScaleLeft If Me.Controls("ctrlCoolBar").Width <> Me.ScaleWidth Then Me.Controls("ctrlCoolBar").Width = Me.ScaleWidth 'get the internal measurement(s) InternalTop = Me.ScaleTop + Me.Controls("ctrlCoolBar").Height InternalHeight = Me.ScaleHeight - (Me.Controls("ctrlCoolBar").Height) 'verify that the measurement(s) are valid If InternalTop < 0 Then InternalTop = 0 ElseIf Me.Controls("ctrlCoolBar").Visible = False And Me.Controls("sbStatus").Visible = True Then 'get the internal measurement(s) InternalTop = Me.ScaleTop InternalHeight = Me.ScaleHeight - (Me.Controls("sbStatus").Height) 'verify that the measurement(s) are valid If InternalTop < 0 Then InternalTop = 0 If InternalHeight < 0 Then InternalHeight = 0 ElseIf Me.Controls("ctrlCoolBar").Visible = False And Controls("sbStatus").Visible = False Then 'get the internal measurement(s) InternalTop = Me.ScaleTop InternalHeight = Me.ScaleHeight 'verify that the measurement(s) are valid If InternalTop < 0 Then InternalTop = 0 If InternalHeight < 0 Then InternalHeight = 0 End If If Me.Controls("tvwSimpleTree").Visible = True And Controls("lstViewInfo").Visible = False Then 'position the treeview If Me.Controls("tvwSimpleTree").Top <> InternalTop Then Me.Controls("tvwSimpleTree").Top = InternalTop If Me.Controls("tvwSimpleTree").Left <> 0 Then Me.Controls("tvwSimpleTree").Left = 0 If Me.Controls("tvwSimpleTree").Height <> InternalHeight Then Me.Controls("tvwSimpleTree").Height = InternalHeight 'position the listview If Me.Controls("lstViewInfo").Top <> InternalTop Then Me.Controls("lstViewInfo").Top = InternalTop If (Me.Controls("lstViewInfo").Left + Me.Controls("tvwSimpleTree").Width) + Septum > 0 Then Me.Controls("lstViewInfo").Left = (Me.Controls("tvwSimpleTree").Left + Me.Controls("tvwSimpleTree").Width) + Septum If Me.Controls("lstViewInfo").Height <> InternalHeight Then Me.Controls("lstViewInfo").Height = InternalHeight If (Me.ScaleWidth - Me.Controls("lstViewInfo").Width) - Septum > 0 Then Me.Controls("lstViewInfo").Width = (Me.ScaleWidth - Me.Controls("tvwSimpleTree").Width) - Septum ElseIf Me.Controls("tvwSimpleTree").Visible = True And Controls("lstViewInfo").Visible = True Then 'position the treeview If Me.Controls("tvwSimpleTree").Top <> InternalTop Then Me.Controls("tvwSimpleTree").Top = InternalTop If Me.Controls("tvwSimpleTree").Left <> 0 Then Me.Controls("tvwSimpleTree").Left = 0 If Me.Controls("tvwSimpleTree").Height <> InternalHeight Then Me.Controls("tvwSimpleTree").Height = InternalHeight 'position the listview If Me.Controls("lstViewInfo").Top <> InternalTop Then Me.Controls("lstViewInfo").Top = InternalTop If (Me.Controls("lstViewInfo").Left + Me.Controls("tvwSimpleTree").Width) + Septum > 0 Then Me.Controls("lstViewInfo").Left = (Me.Controls("tvwSimpleTree").Left + Me.Controls("tvwSimpleTree").Width) + Septum If Me.Controls("lstViewInfo").Height <> InternalHeight Then Me.Controls("lstViewInfo").Height = InternalHeight If (Me.ScaleWidth - Me.Controls("lstViewInfo").Width) - Septum > 0 Then Me.Controls("lstViewInfo").Width = (Me.ScaleWidth - Me.Controls("tvwSimpleTree").Width) - Septum ElseIf Me.Controls("tvwSimpleTree").Visible = False And Controls("lstViewInfo").Visible = True Then 'position the treeview If Me.Controls("lstViewInfo").Top <> InternalTop Then Me.Controls("lstViewInfo").Top = InternalTop If Me.Controls("lstViewInfo").Left <> 0 Then Me.Controls("lstViewInfo").Left = 0 If Me.Controls("lstViewInfo").Height <> InternalHeight Then Me.Controls("lstViewInfo").Height = InternalHeight ElseIf Me.Controls("tvwSimpleTree").Visible = False And Controls("lstViewInfo").Visible = False Then Exit Sub End If 'ensure listview's column headers get resized as well.. If lstViewInfo.Visible Then If lstViewInfo.ColumnHeaders.Count > 0 Then If lstViewInfo.ColumnHeaders(2).Width <> (lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width) Then _ lstViewInfo.ColumnHeaders(2).Width = (lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width) End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_Terminate ' * procedure description: Occurs when all references to an instance of a Form, MDIForm, or class are removed from memory. ' * ' ****************************************************************************************************************************** Private Sub Form_Terminate() On Local Error GoTo ErrLine 'dereference & clean-up module-level data If Not gbl_objQuartzVB Is Nothing Then Set gbl_objQuartzVB = Nothing If Not gbl_colNormalEnum Is Nothing Then Set gbl_colNormalEnum = Nothing 'dereference & clean-up application-level data If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: Form_Unload ' * procedure description: Occurs when a form is about to be removed from the screen. ' * ' ****************************************************************************************************************************** Private Sub Form_Unload(Cancel As Integer) On Local Error GoTo ErrLine With Me .Move 0 - (Screen.Width * 8), 0 - (Screen.Height * 8): .Visible = False End With Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- MENU EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: mnuClip_Click ' * procedure description: Occurs when the clip popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuClip_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False If mnuClipCollapse.Enabled = False Then mnuClipCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuClipExpand.Enabled = False Then mnuClipExpand.Enabled = True If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False Else If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuClipCollapse_Click ' * procedure description: Occurs when the clip popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuClipCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuClipExpand.Enabled = False Then mnuClipExpand.Enabled = True If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuClipExpand_Click ' * procedure description: Occurs when the clip popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuClipExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False If mnuClipCollapse.Enabled = False Then mnuClipCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuClipDelete_Click ' * procedure description: Occurs when the clip popup context menu's 'Delete' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuClipDelete_Click() Dim objSource As AMTimelineSrc On Local Error GoTo ErrLine 'obtain the source from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objSource = gbl_objDexterObject Else: Exit Sub End If 'remove the item Call gbl_objDexterObject.RemoveAll Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key) Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index) If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing 'clean-up & dereference If Not objSource Is Nothing Then Set objSource = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuClipEdit_Click ' * procedure description: Occurs when the clip popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuClipEdit_Click() Dim nMuted As Long Dim dblTStart As Double Dim dblTStop As Double Dim dblMStart As Double Dim dblMStop As Double Dim nStretchMode As Long Dim nStreamNumber As Long Dim dblDefaultFPS As Double Dim dblMediaLength As Double Dim bstrClipMediaName As String Dim objSourceClip As AMTimelineSrc On Local Error GoTo ErrLine 'obtain the source from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objSourceClip = gbl_objDexterObject Else: Exit Sub End If 'obtain existing group information If Not objSourceClip Is Nothing Then With objSourceClip 'get media name bstrClipMediaName = .GetMediaName 'get dexter start & stop times Call gbl_objDexterObject.GetStartStop2(dblTStart, dblTStop) 'get media start & stop times Call .GetMediaTimes2(dblMStart, dblMStop) 'get medialength dblMediaLength = (dblMStop - dblMStart) 'get stream number Call .GetStreamNumber(nStreamNumber) 'get default fps Call .GetDefaultFPS(dblDefaultFPS) 'get stretch mode Call .GetStretchMode(nStretchMode) 'get muted Call gbl_objDexterObject.GetMuted(nMuted) End With End If 'hide the dialog Load frmClip frmClip.Visible = False 'update the form with the existing information With frmClip .txtMediaName = CStr(bstrClipMediaName) .txtMStart = CStr(dblMStart) .txtMStop = CStr(dblMStop) .txtTStart = CStr(dblTStart) .txtTStop = CStr(dblTStop) .txtMediaLength = CStr(dblMediaLength) .txtStreamNumber = CStr(nStreamNumber) .txtFPS = CStr(dblDefaultFPS) .txtStretchMode = CStr(nStretchMode) .txtMuted = CStr(nMuted) End With 'display the dialog frmClip.Caption = "Edit Source" frmClip.Show vbModal, Me 'wait until the user closes the dialog Do Until frmClip.Visible = False: DoEvents Loop 'verify unload mode If frmClip.UnloadMode = 1 Then Unload frmClip: Set frmClip = Nothing: Exit Sub End If 'update the timeline info given the new information With objSourceClip 'set the media name If frmClip.txtMediaName.Text <> vbNullString Then Call .SetMediaName(CStr(frmClip.txtMediaName.Text)) End If 'set the media times If IsNumeric(frmClip.txtMStart.Text) Then Call .SetMediaTimes2(CDbl(frmClip.txtMStart.Text), CDbl(frmClip.txtMStop.Text)) End If 'set the media length If IsNumeric(frmClip.txtMStop.Text) Then Call .SetMediaLength2(CDbl(frmClip.txtTStop.Text) - CDbl(frmClip.txtTStart.Text)) End If 'set stream number If IsNumeric(frmClip.txtStreamNumber.Text) Then Call .SetStreamNumber(CLng(frmClip.txtStreamNumber.Text)) End If 'set default frames per second If IsNumeric(frmClip.txtFPS.Text) Then Call .SetDefaultFPS(CDbl(frmClip.txtFPS.Text)) End If 'set stretch mode If IsNumeric(frmClip.txtStretchMode.Text) Then Call .SetStretchMode(CLng(frmClip.txtStretchMode.Text)) End If 'set muted state If IsNumeric(frmClip.txtMuted.Text) Then Call gbl_objDexterObject.SetMuted(CLng(frmClip.txtMuted.Text)) End If End With 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'destroy the dialog Unload frmClip: Set frmClip = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuComp_Click ' * procedure description: Occurs when the composition popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuComp_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False If mnuCompCollapse.Enabled = False Then mnuCompCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuCompExpand.Enabled = False Then mnuCompExpand.Enabled = True If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False Else If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompCollapse_Click ' * procedure description: Occurs when the composition popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuCompExpand.Enabled = False Then mnuCompExpand.Enabled = True If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompExpand_Click ' * procedure description: Occurs when the composition popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False If mnuCompCollapse.Enabled = False Then mnuCompCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompAddComp_Click ' * procedure description: Occurs when the composition popup context menu's 'Add Composition' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompAddComp_Click() Dim nPriority As Long Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewComposite As AMTimelineComp On Local Error GoTo ErrLine 'display the dialog frmComp.Caption = "Add Composition" frmComp.Show vbModal, Me 'wait until the user closes the dialog Do Until frmComp.Visible = False: DoEvents Loop 'verify unload mode If frmComp.UnloadMode = 1 Then Unload frmComp: Set frmComp = Nothing: Exit Sub End If 'query the dialog for user input With frmComp nPriority = CLng(.txtPriority.Text) dblStartTime = CDbl(.txtStartTime.Text) dblStopTime = CDbl(.txtStopTime.Text) End With 'insert the composite into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewComposite = CreateComposite(gbl_objTimeline) If Not objNewComposite Is Nothing Then Call InsertComposite(objNewComposite, gbl_objDexterObject) If Not gbl_objDexterObject Is Nothing Then Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'unload the dialog Unload frmComp: Set frmComp = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompAddEffect_Click ' * procedure description: Occurs when the composition popup context menu's 'Add Effect' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompAddEffect_Click() Dim nEffectPriority As Long Dim bstrEffectGUID As String Dim dblEffectStopTime As Double Dim dblEffectStartTime As Double Dim objNewEffect As AMTimelineEffect Dim objTimelineObject As AMTimelineObj On Local Error GoTo ErrLine 'display the insert effect dialog frmEffect.Caption = "Add Effect" frmEffect.Show vbModal, Me 'wait until the user closes the dialog Do: DoEvents If frmEffect.Visible = False Then Exit Do Loop 'verify unload mode If frmEffect.UnloadMode = 1 Then Unload frmEffect: Set frmEffect = Nothing: Exit Sub End If 'query the dialog information With frmEffect If IsNumeric(.txtStartTime.Text) Then dblEffectStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblEffectStopTime = CDbl(.txtStopTime.Text) End If If IsNumeric(.txtPriority.Text) Then nEffectPriority = CLng(.txtPriority.Text) End If If .cmbEffect.Text <> vbNullString Then bstrEffectGUID = CStr(.cmbEffect.Text) End If End With 'insert the effect into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewEffect = CreateEffect(gbl_objTimeline) If Not objNewEffect Is Nothing Then Call InsertEffect(objNewEffect, gbl_objDexterObject, EffectFriendlyNameToCLSID(bstrEffectGUID), dblEffectStartTime, dblEffectStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmEffect: Set frmEffect = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompAddTrack_Click ' * procedure description: Occurs when the composition popup context menu's 'Add Track' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompAddTrack_Click() Dim nBlank As Long Dim nMuted As Long Dim nPriority As Long Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewTrack As AMTimelineTrack On Local Error GoTo ErrLine 'display the dialog frmTrack.Caption = "Add Track" frmTrack.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTrack.Visible = False: DoEvents Loop 'verify unload mode If frmTrack.UnloadMode = 1 Then Unload frmTrack: Set frmTrack = Nothing: Exit Sub End If 'obtain the user input from the dialog With frmTrack If IsNumeric(.txtBlank.Text) Then nBlank = CLng(.txtBlank.Text) End If If IsNumeric(.txtMuted.Text) Then nMuted = CLng(.txtMuted.Text) End If If IsNumeric(.txtMuted.Text) Then nPriority = CLng(.txtMuted.Text) End If If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If End With 'insert the track into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewTrack = CreateTrack(gbl_objTimeline) If Not objNewTrack Is Nothing Then Call InsertTrack(objNewTrack, gbl_objDexterObject, nPriority) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy dialog Unload frmTrack: Set frmTrack = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompAddTransition_Click ' * procedure description: Occurs when the composition popup context menu's 'Add Transition' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompAddTransition_Click() Dim nCutpoint As Long Dim nCutsOnly As Long Dim nSwapInputs As Long Dim bstrTransition As String Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewTransition As AMTimelineTrans On Local Error GoTo ErrLine 'display the dialog frmTransitions.Caption = "Add Transition" frmTransitions.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTransitions.Visible = False: DoEvents Loop 'verify unload mode If frmTransitions.UnloadMode = 1 Then Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub End If 'obtain user input With frmTransitions If IsNumeric(.txtCutpoint.Text) Then nCutpoint = CLng(.txtCutpoint.Text) End If If IsNumeric(.txtCutsOnly.Text) Then nCutsOnly = CLng(.txtCutsOnly.Text) End If If IsNumeric(.txtSwapInputs.Text) Then nSwapInputs = CLng(.txtSwapInputs.Text) End If If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If If .cmbTransition.Text <> vbNullString Then bstrTransition = CStr(.cmbTransition.Text) End If End With 'insert the transition into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewTransition = CreateTransition(gbl_objTimeline) If Not objNewTransition Is Nothing Then Call InsertTransition(objNewTransition, gbl_objDexterObject, TransitionFriendlyNameToCLSID(bstrTransition), dblStartTime, dblStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmTransitions: Set frmTransitions = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompDelete_Click ' * procedure description: Occurs when the composition popup context menu's 'Delete' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompDelete_Click() Dim objComposition As AMTimelineComp On Local Error GoTo ErrLine 'obtain the composition from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objComposition = gbl_objDexterObject Else: Exit Sub End If 'remove the item Call gbl_objDexterObject.RemoveAll Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key) Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index) If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing 'clean-up & dereference If Not objComposition Is Nothing Then Set objComposition = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuCompEdit_Click ' * procedure description: Occurs when the composition popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuCompEdit_Click() Dim nPriority As Long Dim dblStopTime As Double Dim dblStartTime As Double Dim objComp As AMTimelineComp On Local Error GoTo ErrLine 'obtain the composition from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objComp = gbl_objDexterObject Else: Exit Sub End If 'obtain existing group information If Not objComp Is Nothing Then 'get start /stoptime Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime) End If 'hide the dialog Load frmComp frmComp.Visible = False 'update the form with the existing information With frmComp .txtPriority = 0 'methodology not available .txtStartTime = CStr(dblStartTime) .txtStopTime = CStr(dblStopTime) End With 'display the dialog frmComp.Caption = "Edit Composition" frmComp.Show vbModal, Me 'wait until the user closes the dialog Do Until frmComp.Visible = False: DoEvents Loop 'verify unload mode If frmComp.UnloadMode = 1 Then Unload frmComp: Set frmComp = Nothing: Exit Sub End If 'update the timeline info given the new information If Not gbl_objDexterObject Is Nothing Then 'set the media times If IsNumeric(frmComp.txtStopTime.Text) And IsNumeric(frmComp.txtStartTime.Text) Then Call gbl_objDexterObject.SetStartStop2(CDbl(frmComp.txtStopTime.Text), CDbl(frmComp.txtStartTime.Text)) End If End If 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'destroy the dialog Unload frmClip: Set frmClip = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuEffect_Click ' * procedure description: Occurs when the effect popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuEffect_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False If mnuEffectCollapse.Enabled = False Then mnuEffectCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuEffectExpand.Enabled = False Then mnuEffectExpand.Enabled = True If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False Else If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuEffectCollapse_Click ' * procedure description: Occurs when the effect popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuEffectCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuEffectExpand.Enabled = False Then mnuEffectExpand.Enabled = True If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuEffectExpand_Click ' * procedure description: Occurs when the effect popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuEffectExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False If mnuEffectCollapse.Enabled = False Then mnuEffectCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuEffectDelete_Click ' * procedure description: Occurs when the effect popup context menu's 'Delete' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuEffectDelete_Click() Dim objEffect As AMTimelineEffect On Local Error GoTo ErrLine 'obtain the effect from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objEffect = gbl_objDexterObject Else: Exit Sub End If 'remove the item Call gbl_objDexterObject.RemoveAll Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key) Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index) If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing 'clean-up & dereference If Not objEffect Is Nothing Then Set objEffect = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuEffectEdit_Click ' * procedure description: Occurs when the effect popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuEffectEdit_Click() Dim nPriority As Long Dim dblStopTime As Double Dim dblStartTime As Double Dim bstrEffectCLSID As String Dim objEffect As AMTimelineEffect On Local Error GoTo ErrLine 'obtain the effect from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objEffect = gbl_objDexterObject Else: Exit Sub End If 'obtain existing group information If Not objEffect Is Nothing Then With objEffect 'get priority Call objEffect.EffectGetPriority(nPriority) 'get start /stoptime Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime) 'get effect guid bstrEffectCLSID = gbl_objDexterObject.GetSubObjectGUIDB End With End If 'hide the dialog Load frmEffect frmEffect.Visible = False 'update the form with the existing information With frmEffect .txtPriority = 0 'methodology not available .txtStartTime = CStr(dblStartTime) .txtStopTime = CStr(dblStopTime) .cmbEffect.Text = CStr(EffectCLSIDToFriendlyName(bstrEffectCLSID)) End With 'display the dialog frmEffect.Caption = "Edit Composition" frmEffect.Show vbModal, Me 'wait until the user closes the dialog Do Until frmEffect.Visible = False: DoEvents Loop 'verify unload mode If frmEffect.UnloadMode = 1 Then Unload frmEffect: Set frmEffect = Nothing: Exit Sub End If 'query the dialog information With frmEffect If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If If IsNumeric(.txtPriority.Text) Then nPriority = CLng(.txtPriority.Text) End If If .cmbEffect.Text <> vbNullString Then bstrEffectCLSID = CStr(.cmbEffect.Text) End If End With 'update the timeline info given the new information If Not gbl_objDexterObject Is Nothing Then 'set the media times Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime) 'set the effect If EffectFriendlyNameToCLSID(bstrEffectCLSID) <> vbNullString Then Call gbl_objDexterObject.SetSubObjectGUIDB(EffectFriendlyNameToCLSID(bstrEffectCLSID)) End If 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmClip: Set frmClip = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuFile_Click ' * procedure description: Occurs when the file popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuFile_Click() On Local Error GoTo ErrLine 'do not allow new timeline or open file operations when rendering.. If Not gbl_objQuartzVB Is Nothing Then If gbl_objQuartzVB.State = QTZStatusPlaying Then If mnuFileNew.Enabled = True Then mnuFileNew.Enabled = False If mnuFileOpen.Enabled = True Then mnuFileOpen.Enabled = False Else If mnuFileNew.Enabled = False Then mnuFileNew.Enabled = True If mnuFileOpen.Enabled = False Then mnuFileOpen.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuFileExit_Click ' * procedure description: Occurs when the file popup context menu's 'Exit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuFileExit_Click() Dim frm As Form On Local Error GoTo ErrLine 'proceed to end the application For Each frm In Forms frm.Move Screen.Width * -8, Screen.Height * -8 frm.Visible = False: Unload frm Next Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuFileNewTimeline_Click ' * procedure description: Occurs when the file popup context menu's 'New' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuFileNewTimeline_Click() On Local Error GoTo ErrLine 'display the timeline dialog frmTimeline.Show vbModal, Me frmTimeline.Caption = "Insert Timeline" 'wait until the user closes the dialog Do Until frmTimeline.Visible = False: DoEvents Loop 'determine if they canceled out If frmTimeline.UnloadMode = 1 Then Unload frmTimeline: Set frmTimeline = Nothing: Exit Sub End If 'clear the existing timeline If Not gbl_objTimeline Is Nothing Then Call ClearTimeline(gbl_objTimeline) 'dereference & clean-up application-level data If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing 'reinitalize application-level data Set gbl_objTimeline = New AMTimeline Set gbl_objFilterGraph = New FilgraphManager 'reinitalize the treeview/listview Call lstViewInfo.ListItems.Clear Call tvwSimpleTree.Nodes.Clear 'set default(s) With gbl_objTimeline If IsNumeric(frmTimeline.txtTransitionsEnabled.Text) Then .EnableTransitions CLng(frmTimeline.txtTransitionsEnabled.Text) End If If IsNumeric(frmTimeline.txtEffectsEnabled.Text) Then .EnableEffects CLng(frmTimeline.txtEffectsEnabled.Text) End If If IsNumeric(frmTimeline.txtDefaultFPS.Text) Then .SetDefaultFPS CDbl(frmTimeline.txtDefaultFPS.Text) End If If frmTimeline.cmbDefaultTransition.Text <> vbNullString Then .SetDefaultTransitionB CStr(TransitionFriendlyNameToCLSID(frmTimeline.cmbDefaultTransition.Text)) End If If frmTimeline.cmbDefaultEffect.Text <> vbNullString Then .SetDefaultEffectB CStr(EffectFriendlyNameToCLSID(frmTimeline.cmbDefaultEffect.Text)) End If End With 'unload dialog Unload frmTimeline: Set frmTimeline = Nothing 'update ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'update the button(s) With tbMain.Buttons .Item("Play").Enabled = True .Item("Pause").Enabled = False .Item("Stop").Enabled = False .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuTimeLinePlay.Enabled = True mnuTimeLineStop.Enabled = False mnuTimeLinePause.Enabled = False mnuTimeLineRenderTimeLine.Enabled = True mnuTimeLineClearRenderEngine.Enabled = True Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuFileOpen_Click ' * procedure description: Occurs when the file popup context menu's 'Open' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuFileOpen_Click() Dim nCount As Long Dim bstrFileName As String Dim objLocalTimeline As AMTimeline On Local Error GoTo ErrLine 'display a common dialog 'for the user and obtain a filename With ctrlCommonDialog .CancelError = True .DefaultExt = "XTL" .Filter = "XTL Files (*.xtl)|*.xtl|" .ShowOpen: bstrFileName = .FileName End With 'verify the file extension is valid If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then 'at least it's been named an xtl file, proceed to attempt an import.. Set objLocalTimeline = New AMTimeline Call RestoreTimeline(objLocalTimeline, bstrFileName, DEXImportXTL) 'verify restoration If Not objLocalTimeline Is Nothing Then 'import succeeded; clean-up application-level scope If Not gbl_objTimeline Is Nothing Then 'dereference & clean-up timeline Call ClearTimeline(gbl_objTimeline) Set gbl_objTimeline = Nothing 'dereference & clean-up rendering If Not gbl_objQuartzVB Is Nothing Then Call gbl_objQuartzVB.StopGraph If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing If Not gbl_objRenderEngine Is Nothing Then Call gbl_objRenderEngine.ScrapIt If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing End If 'assign the local timeline to global scope Set gbl_objTimeline = objLocalTimeline 'render the timeline and derive a filter graph manager Set gbl_objFilterGraph = RenderTimeline(gbl_objTimeline) 'map the timeline to the userinterface Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) mnuTimeLineClearRenderEngine.Enabled = False 'update the button(s) With tbMain.Buttons .Item("Play").Enabled = True .Item("Pause").Enabled = False .Item("Stop").Enabled = False .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'enable/disable the state of the popup context menu's If mnuTimeLinePlay.Enabled = False Then mnuTimeLinePlay.Enabled = True If mnuTimeLineStop.Enabled = True Then mnuTimeLineStop.Enabled = False If mnuTimeLinePause.Enabled = False Then mnuTimeLinePause.Enabled = True If mnuTimeLineRenderTimeLine.Enabled = True Then mnuTimeLineRenderTimeLine.Enabled = False If mnuTimeLineClearRenderEngine.Enabled = False Then mnuTimeLineClearRenderEngine.Enabled = True 'reset module-level filename gbl_bstrLoadFile = ctrlCommonDialog.FileName 'reset the caption on the application's main form bstrFileName = Mid(bstrFileName, InStrRev(bstrFileName, "\") + 1) Me.Caption = "DexterVB - " & bstrFileName End If End If 'clean-up & dereference If Not objLocalTimeline Is Nothing Then Set objLocalTimeline = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuFileSaveAs_Click ' * procedure description: Occurs when the file popup context menu's 'SaveAs' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuFileSaveAs_Click() Dim bstrFileName As String On Local Error GoTo ErrLine 'display a common dialog 'for the user and obtain a filename With ctrlCommonDialog .CancelError = True .DefaultExt = "XTL" .Filter = "XTL Files (*.xtl)|*.xtl|Graph Files (*.grf)|*.grf|" .ShowSave: bstrFileName = .FileName End With 'verify the file extension is valid If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then 'user would like to export as an xtl file, proceed to attempt an export.. If Not gbl_objTimeline Is Nothing Then Call SaveTimeline(gbl_objTimeline, bstrFileName, DEXExportXTL) End If ElseIf InStr(1, LCase(bstrFileName), ".grf") > 0 Then 'user would like to export as a graph file, proceed to attempt an export.. If Not gbl_objTimeline Is Nothing Then Call SaveTimeline(gbl_objTimeline, bstrFileName, DEXExportGRF) End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroup_Click ' * procedure description: Occurs when the group popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuGroup_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False If mnuGroupCollapse.Enabled = False Then mnuGroupCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuGroupExpand.Enabled = False Then mnuGroupExpand.Enabled = True If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False Else If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupCollapse_Click ' * procedure description: Occurs when the group popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuGroupExpand.Enabled = False Then mnuGroupExpand.Enabled = True If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupExpand_Click ' * procedure description: Occurs when the group popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False If mnuGroupCollapse.Enabled = False Then mnuGroupCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupAddComp_Click ' * procedure description: Occurs when the group popup context menu's 'Add Composition' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupAddComp_Click() Dim nPriority As Long Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewComposite As AMTimelineComp On Local Error GoTo ErrLine 'display the dialog frmComp.Caption = "Add Composition" frmComp.Show vbModal, Me 'wait until the user closes the dialog Do Until frmComp.Visible = False: DoEvents Loop 'verify unload mode If frmComp.UnloadMode = 1 Then Unload frmComp: Set frmComp = Nothing: Exit Sub End If 'query the dialog for user input With frmComp If IsNumeric(.txtPriority.Text) Then nPriority = CLng(.txtPriority.Text) End If If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If End With 'insert the composite into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewComposite = CreateComposite(gbl_objTimeline) If Not objNewComposite Is Nothing Then Call InsertComposite(objNewComposite, gbl_objDexterObject) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'unload the dialog Unload frmComp: Set frmComp = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupAddEffect_Click ' * procedure description: Occurs when the group popup context menu's 'Add Effect' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupAddEffect_Click() Dim nEffectPriority As Long Dim bstrEffectGUID As String Dim dblEffectStopTime As Double Dim dblEffectStartTime As Double Dim objNewEffect As AMTimelineEffect Dim objTimelineObject As AMTimelineObj On Local Error GoTo ErrLine 'display the insert effect dialog frmEffect.Caption = "Add Effect" frmEffect.Show vbModal, Me 'wait until the user closes the dialog Do: DoEvents If frmEffect.Visible = False Then Exit Do Loop 'verify unload mode If frmEffect.UnloadMode = 1 Then Unload frmEffect: Set frmEffect = Nothing: Exit Sub End If 'query the dialog information With frmEffect If IsNumeric(.txtStartTime.Text) Then dblEffectStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblEffectStopTime = CDbl(.txtStopTime.Text) End If If IsNumeric(.txtPriority.Text) Then nEffectPriority = CLng(.txtPriority.Text) End If If .cmbEffect.Text <> vbNullString Then bstrEffectGUID = CStr(.cmbEffect.Text) End If End With 'insert the effect into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewEffect = CreateEffect(gbl_objTimeline) If Not objNewEffect Is Nothing Then Call InsertEffect(objNewEffect, gbl_objDexterObject, EffectFriendlyNameToCLSID(bstrEffectGUID), dblEffectStartTime, dblEffectStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmEffect: Set frmEffect = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupAddTrack_Click ' * procedure description: Occurs when the group popup context menu's 'Add Track' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupAddTrack_Click() Dim nBlank As Long Dim nMuted As Long Dim nPriority As Long Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewTrack As AMTimelineTrack On Local Error GoTo ErrLine 'display the dialog frmTrack.Caption = "Add Track" frmTrack.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTrack.Visible = False: DoEvents Loop 'verify unload mode If frmTrack.UnloadMode = 1 Then Unload frmTrack: Set frmTrack = Nothing: Exit Sub End If 'obtain the user input from the dialog With frmTrack If IsNumeric(.txtBlank.Text) Then nBlank = CLng(.txtBlank.Text) End If If IsNumeric(.txtMuted.Text) Then nMuted = CLng(.txtMuted.Text) End If If IsNumeric(.txtMuted.Text) Then nPriority = CLng(.txtMuted.Text) End If If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If End With 'insert the track into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewTrack = CreateTrack(gbl_objTimeline) If Not objNewTrack Is Nothing Then Call InsertTrack(objNewTrack, gbl_objDexterObject, nPriority) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy dialog Unload frmTrack: Set frmTrack = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupAddTransition_Click ' * procedure description: Occurs when the group popup context menu's 'Add Transition' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupAddTransition_Click() Dim nCutpoint As Long Dim nCutsOnly As Long Dim nSwapInputs As Long Dim bstrTransition As String Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewTransition As AMTimelineTrans On Local Error GoTo ErrLine 'display the dialog frmTransitions.Caption = "Add Transition" frmTransitions.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTransitions.Visible = False: DoEvents Loop 'verify unload mode If frmTransitions.UnloadMode = 1 Then Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub End If 'obtain user input With frmTransitions If IsNumeric(.txtCutpoint.Text) Then nCutpoint = CLng(.txtCutpoint.Text) End If If IsNumeric(.txtCutsOnly.Text) Then nCutsOnly = CLng(.txtCutsOnly.Text) End If If IsNumeric(.txtSwapInputs.Text) Then nSwapInputs = CLng(.txtSwapInputs.Text) End If If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If If .cmbTransition.Text <> vbNullString Then bstrTransition = CStr(.cmbTransition.Text) End If End With 'insert the transition into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewTransition = CreateTransition(gbl_objTimeline) If Not objNewTransition Is Nothing Then Call InsertTransition(objNewTransition, gbl_objDexterObject, TransitionFriendlyNameToCLSID(bstrTransition), dblStartTime, dblStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmTransitions: Set frmTransitions = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupDelete_Click ' * procedure description: Occurs when the group popup context menu's 'Delete' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupDelete_Click() Dim objGroup As AMTimelineGroup On Local Error GoTo ErrLine 'obtain the group from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objGroup = gbl_objDexterObject Else: Exit Sub End If 'remove the item Call gbl_objDexterObject.RemoveAll Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key) Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index) If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuGroupEdit_Click ' * procedure description: Occurs when the group popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuGroupEdit_Click() Dim nPriority As Long Dim nOutputBuffer As Long Dim nPreviewMode As Long Dim dblOutputFPS As Double Dim bstrGroupName As String Dim nSmartRecompDirty As Long Dim nSmartRecompFormat As Long Dim objGroup As AMTimelineGroup On Local Error GoTo ErrLine 'obtain the group from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objGroup = gbl_objDexterObject Else: Exit Sub End If 'obtain existing group information If Not objGroup Is Nothing Then With objGroup bstrGroupName = .GetGroupName Call .GetOutputBuffering(nOutputBuffer) Call .GetOutputFPS(dblOutputFPS) Call .GetPreviewMode(nPreviewMode) Call .GetPriority(nPriority) Call .IsRecompressFormatDirty(nSmartRecompDirty) Call .IsSmartRecompressFormatSet(nSmartRecompFormat) End With End If 'hide the dialog Load frmGroup frmTimeline.Visible = False 'update the form with the existing information With frmGroup .txtGroupName = bstrGroupName .txtMediaType = "?" 'feature unavailable, simply set to nullstring .txtPriority = nPriority .txtOutputFPS = dblOutputFPS .txtPreviewMode = nPreviewMode .txtBuffering = nOutputBuffer End With 'display the dialog frmGroup.Caption = "Edit Group" frmGroup.Show vbModal, Me 'wait until the user closes the dialog Do Until frmGroup.Visible = False: DoEvents Loop 'verify unload mode If frmGroup.UnloadMode = 1 Then Unload frmGroup: Set frmGroup = Nothing: Exit Sub End If 'update the timeline info given the new information With objGroup .SetGroupName CStr(frmGroup.txtGroupName) If IsNumeric(frmGroup.txtMediaType) Then .SetMediaTypeForVB CLng(frmGroup.txtMediaType) End If If IsNumeric(frmGroup.txtOutputFPS) Then If CDbl(frmGroup.txtOutputFPS) > 0 Then .SetOutputFPS CDbl(frmGroup.txtOutputFPS) End If End If If IsNumeric(frmGroup.txtPreviewMode) Then .SetPreviewMode CLng(frmGroup.txtPreviewMode) End If If IsNumeric(frmGroup.txtBuffering) Then If CLng(frmGroup.txtBuffering) > 0 Then .SetOutputBuffering CLng(frmGroup.txtBuffering) End If End If End With 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'destroy the dialog Unload frmGroup: Set frmGroup = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuHelpAbout_Click ' * procedure description: Occurs when the help menu's 'About' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuHelpAbout_Click() On Local Error GoTo ErrLine 'display the about dialog for the user frmAbout.Show 1, Me frmAbout.SetFocus Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLine_Click ' * procedure description: Occurs when the timeline popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuTimeLine_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False If mnuTimelineCollapse.Enabled = False Then mnuTimelineCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuTimelineExpand.Enabled = False Then mnuTimelineExpand.Enabled = True If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False Else If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimelineCollapse_Click ' * procedure description: Occurs when the timeline popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimelineCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuTimelineExpand.Enabled = False Then mnuTimelineExpand.Enabled = True If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimelineExpand_Click ' * procedure description: Occurs when the timeline popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimelineExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False If mnuTimelineCollapse.Enabled = False Then mnuTimelineCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLineClearRenderEngine_Click ' * procedure description: Occurs when the timeline popup context menu's 'ClearRenderEngine' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimeLineClearRenderEngine_Click() On Local Error GoTo ErrLine 'dereference & clean-up If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing If Not gbl_objRenderEngine Is Nothing Then Call gbl_objRenderEngine.ScrapIt If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing 'disable popup context menu(s) If mnuTimeLineRenderTimeLine.Enabled = False Then mnuTimeLineRenderTimeLine.Enabled = True If mnuTimeLineClearRenderEngine.Enabled = True Then mnuTimeLineClearRenderEngine.Enabled = False Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLineEdit_Click ' * procedure description: Occurs when the timeline popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimeLineEdit_Click() Dim nDirty As Long Dim nInsertMode As Long Dim dblDuration As Double Dim nEffectsEnabled As Long Dim dblDefaultFPS As Double Dim bstrDefaultEffect As String Dim nTransitionsEnabled As Long Dim bstrDefaultTransition As String On Local Error GoTo ErrLine 'obtain existing timeline information If Not gbl_objTimeline Is Nothing Then With gbl_objTimeline .GetInsertMode nInsertMode .TransitionsEnabled nTransitionsEnabled .EffectsEnabled nEffectsEnabled .GetDefaultFPS dblDefaultFPS .IsDirty nDirty bstrDefaultTransition = .GetDefaultTransitionB bstrDefaultEffect = .GetDefaultEffectB End With End If 'hide the dialog Load frmTimeline frmTimeline.Visible = False 'update the form with the existing information With frmTimeline .txtInsertMode.Text = CStr(nInsertMode) .txtTransitionsEnabled.Text = CStr(nTransitionsEnabled) .txtEffectsEnabled.Text = CStr(nEffectsEnabled) .txtDuration.Text = CStr(dblDuration) .txtDefaultFPS.Text = CStr(dblDefaultFPS) .txtDirty.Text = CStr(nDirty) .cmbDefaultTransition.Text = CStr(TransitionCLSIDToFriendlyName(bstrDefaultTransition)) .cmbDefaultEffect.Text = CStr(EffectCLSIDToFriendlyName(bstrDefaultEffect)) End With 'display the dialog frmTimeline.Caption = "Edit Timeline" frmTimeline.txtDuration.Enabled = False frmTimeline.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTimeline.Visible = False: DoEvents Loop 'determine if they canceled out If frmTimeline.UnloadMode = 1 Then Unload frmTimeline: Set frmTimeline = Nothing: Exit Sub End If 'update the timeline info given the new information With gbl_objTimeline If IsNumeric(frmTimeline.txtTransitionsEnabled.Text) Then .EnableTransitions CLng(frmTimeline.txtTransitionsEnabled.Text) End If If IsNumeric(frmTimeline.txtEffectsEnabled.Text) Then .EnableEffects CLng(frmTimeline.txtEffectsEnabled.Text) End If If IsNumeric(frmTimeline.txtDefaultFPS.Text) Then .SetDefaultFPS CDbl(frmTimeline.txtDefaultFPS.Text) End If If TransitionFriendlyNameToCLSID(frmTimeline.cmbDefaultTransition.Text) <> vbNullString Then .SetDefaultTransitionB CStr(TransitionFriendlyNameToCLSID(frmTimeline.cmbDefaultTransition.Text)) End If If EffectFriendlyNameToCLSID(frmTimeline.cmbDefaultEffect.Text) <> vbNullString Then .SetDefaultEffectB CStr(EffectFriendlyNameToCLSID(frmTimeline.cmbDefaultEffect.Text)) End If End With 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'destroy the dialog Unload frmTimeline: Set frmTimeline = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLineInsertGroup_Click ' * procedure description: Occurs when the timeline popup context menu's 'Insert Group' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimeLineInsertGroup_Click() Dim nPriority As Long Dim nBuffering As Long Dim nMediaType As Long Dim dblOutputFPS As Double Dim nPreviewMode As Long Dim bstrGroupName As String Dim objNewGroup As AMTimelineGroup On Local Error GoTo ErrLine 'display the dialog frmGroup.Caption = "Insert Group" Call frmGroup.Show(vbModal, Me) 'wait until the user closes the dialog Do Until frmGroup.Visible = False: DoEvents Loop 'verify unload mode If frmGroup.UnloadMode = 1 Then Unload frmGroup: Set frmGroup = Nothing: Exit Sub End If 'obtain the values the user entered into the dialog With frmGroup If IsNumeric(.txtPriority.Text) Then nPriority = CLng(.txtPriority.Text) End If If IsNumeric(.txtBuffering.Text) Then nBuffering = CLng(.txtBuffering.Text) End If If IsNumeric(.txtMediaType.Text) Then nMediaType = CLng(.txtMediaType.Text) End If If IsNumeric(.txtOutputFPS.Text) Then dblOutputFPS = CDbl(.txtOutputFPS.Text) End If If IsNumeric(.txtPreviewMode.Text) Then nPreviewMode = CLng(.txtPreviewMode.Text) End If If .txtGroupName.Text <> vbNullString Then bstrGroupName = CStr(.txtGroupName.Text) End If End With 'insert the new group into the application timeline Set objNewGroup = _ CreateGroup(gbl_objTimeline, bstrGroupName, nMediaType, dblOutputFPS, nPreviewMode, nBuffering) If Not objNewGroup Is Nothing Then Call InsertGroup(gbl_objTimeline, objNewGroup) 'refresh ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'update the button(s) With tbMain.Buttons .Item("New").Enabled = True .Item("Open").Enabled = True .Item("Save").Enabled = True .Item("Play").Enabled = True .Item("Pause").Enabled = False .Item("Stop").Enabled = False .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuFileSaveAs.Enabled = True mnuTimeLinePlay.Enabled = True mnuTimeLineStop.Enabled = False mnuTimeLinePause.Enabled = False mnuTimeLineRenderTimeLine.Enabled = True mnuTimeLineClearRenderEngine.Enabled = True 'unload the dialog Unload frmGroup: Set frmGroup = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLinePause_Click ' * procedure description: Occurs when the timeline popup context menu's 'Pause' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimelinePause_Click() On Local Error GoTo ErrLine 'dupe the funtionality of a 'pause' button click Call tbMain_ButtonClick(tbMain.Buttons("Pause")) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLinePlay_Click ' * procedure description: Occurs when the timeline popup context menu's 'Play' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimelinePlay_Click() On Local Error GoTo ErrLine 'dupe the funtionality of a 'play' button click Call tbMain_ButtonClick(tbMain.Buttons("Play")) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLineRenderTimeLine_Click ' * procedure description: Occurs when the timeline popup context menu's 'RenderTimeline' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimeLineRenderTimeLine_Click() On Local Error GoTo ErrLine 'refresh ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'connect front end Call gbl_objRenderEngine.ConnectFrontEnd 'enable/disable popup context menu's mnuTimeLineRenderTimeLine.Enabled = False mnuTimeLineClearRenderEngine.Enabled = True Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTimeLineStop_Click ' * procedure description: Occurs when the timeline popup context menu's 'Stop' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTimelineStop_Click() On Local Error GoTo ErrLine 'dupe the funtionality of a 'stop' button click Call tbMain_ButtonClick(tbMain.Buttons("Stop")) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrack_Click ' * procedure description: Occurs when the track popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuTrack_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False If mnuTrackCollapse.Enabled = False Then mnuTrackCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuTrackExpand.Enabled = False Then mnuTrackExpand.Enabled = True If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False Else If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackCollapse_Click ' * procedure description: Occurs when the track popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuTrackExpand.Enabled = False Then mnuTrackExpand.Enabled = True If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackExpand_Click ' * procedure description: Occurs when the track popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False If mnuTrackCollapse.Enabled = False Then mnuTrackCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackAddClip_Click ' * procedure description: Occurs when the track popup context menu's 'Add Clip' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackAddClip_Click() Dim nMuted As Long Dim dblFPS As Double Dim dblTStop As Double Dim dblTStart As Double Dim dblMStart As Double Dim dblMStop As Double Dim nStretchMode As Long Dim nStreamNumber As Long Dim dblMediaLength As Double Dim bstrMediaSourceName As String Dim objNewSourceClip As AMTimelineSrc On Local Error GoTo ErrLine 'display the dialog frmClip.Caption = "Add Clip" frmClip.Show vbModal, Me 'wait until the user closes the dialog Do Until frmClip.Visible = False: DoEvents Loop 'verify unload mode If frmClip.UnloadMode = 1 Then Unload frmClip: Set frmClip = Nothing: Exit Sub End If 'obtain the user input from the dialog With frmClip If IsNumeric(.txtMStart.Text) Then dblMStart = CDbl(.txtMStart.Text) End If If IsNumeric(.txtTStop.Text) Then dblMStop = CDbl(.txtTStop.Text) End If If IsNumeric(.txtTStart.Text) Then dblTStart = CDbl(.txtTStart.Text) End If If IsNumeric(.txtTStop.Text) Then dblTStop = CDbl(.txtTStop.Text) End If If IsNumeric(.txtMediaLength.Text) Then dblMediaLength = CDbl(.txtMediaLength.Text) End If If IsNumeric(.txtStreamNumber.Text) Then nStreamNumber = CLng(.txtStreamNumber.Text) End If If IsNumeric(.txtFPS.Text) Then dblFPS = CDbl(.txtFPS.Text) End If If IsNumeric(.txtStretchMode.Text) Then nStretchMode = CLng(.txtStretchMode.Text) End If If IsNumeric(.txtMuted.Text) Then nMuted = CLng(.txtMuted.Text) End If If .txtMediaName <> vbNullString Then bstrMediaSourceName = CStr(.txtMediaName) End If End With 'insert the new clip into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewSourceClip = CreateSource(gbl_objTimeline) If Not objNewSourceClip Is Nothing Then Call InsertSource(gbl_objDexterObject, objNewSourceClip, bstrMediaSourceName, dblTStart, dblTStop, dblMStart, dblMStop) If Not objNewSourceClip Is Nothing Then 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'update the button(s) With tbMain.Buttons .Item("Play").Enabled = True .Item("Pause").Enabled = False .Item("Stop").Enabled = False .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuTimeLinePlay.Enabled = True mnuTimeLineStop.Enabled = False mnuTimeLinePause.Enabled = False mnuTimeLineRenderTimeLine.Enabled = True mnuTimeLineClearRenderEngine.Enabled = True End If End If 'destroy dialog Unload frmClip: Set frmClip = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackAddEffect_Click ' * procedure description: Occurs when the track popup context menu's 'Add Effect' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackAddEffect_Click() Dim nEffectPriority As Long Dim bstrEffectGUID As String Dim dblEffectStopTime As Double Dim dblEffectStartTime As Double Dim objNewEffect As AMTimelineEffect Dim objTimelineObject As AMTimelineObj On Local Error GoTo ErrLine 'display the insert effect dialog frmEffect.Caption = "Add Effect" frmEffect.Show vbModal, Me 'wait until the user closes the dialog Do: DoEvents If frmEffect.Visible = False Then Exit Do Loop 'verify unload mode If frmEffect.UnloadMode = 1 Then Unload frmEffect: Set frmEffect = Nothing: Exit Sub End If 'query the dialog information With frmEffect If IsNumeric(.txtStartTime.Text) Then dblEffectStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblEffectStopTime = CDbl(.txtStopTime.Text) End If If IsNumeric(.txtPriority.Text) Then nEffectPriority = CLng(.txtPriority.Text) End If If .cmbEffect.Text <> vbNullString Then bstrEffectGUID = CStr(.cmbEffect.Text) End If End With 'insert the effect into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewEffect = CreateEffect(gbl_objTimeline) If Not objNewEffect Is Nothing Then Call InsertEffect(objNewEffect, gbl_objDexterObject, EffectFriendlyNameToCLSID(bstrEffectGUID), dblEffectStartTime, dblEffectStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmEffect: Set frmEffect = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackAddTransition_Click ' * procedure description: Occurs when the track popup context menu's 'Add Transition' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackAddTransition_Click() Dim nCutpoint As Long Dim nCutsOnly As Long Dim nSwapInputs As Long Dim bstrTransition As String Dim dblStartTime As Double Dim dblStopTime As Double Dim objNewTransition As AMTimelineTrans On Local Error GoTo ErrLine 'display the dialog frmTransitions.Caption = "Add Transition" frmTransitions.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTransitions.Visible = False: DoEvents Loop 'verify unload mode If frmTransitions.UnloadMode = 1 Then Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub End If 'obtain user input With frmTransitions If IsNumeric(.txtCutpoint.Text) Then nCutpoint = CLng(.txtCutpoint.Text) End If If IsNumeric(.txtCutsOnly.Text) Then nCutsOnly = CLng(.txtCutsOnly.Text) End If If IsNumeric(.txtSwapInputs.Text) Then nSwapInputs = CLng(.txtSwapInputs.Text) End If If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If If .cmbTransition.Text <> vbNullString Then bstrTransition = CStr(.cmbTransition.Text) End If End With 'insert the transition into the timeline If Not gbl_objTimeline Is Nothing Then Set objNewTransition = CreateTransition(gbl_objTimeline) If Not objNewTransition Is Nothing Then Call InsertTransition(objNewTransition, gbl_objDexterObject, TransitionFriendlyNameToCLSID(bstrTransition), dblStartTime, dblStopTime) 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) End If 'destroy the dialog Unload frmTransitions: Set frmTransitions = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackDelete_Click ' * procedure description: Occurs when the track popup context menu's 'Delete' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackDelete_Click() Dim objTrack As AMTimelineTrack On Local Error GoTo ErrLine 'obtain the track from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objTrack = gbl_objDexterObject Else: Exit Sub End If 'remove the item Call gbl_objDexterObject.RemoveAll Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key) Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index) If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing 'clean-up & dereference If Not objTrack Is Nothing Then Set objTrack = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrackEdit_Click ' * procedure description: Occurs when the track popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTrackEdit_Click() Dim nBlank As Long Dim nMuted As Long Dim nPriority As Long Dim dblStopTime As Double Dim dblStartTime As Double Dim objTrack As AMTimelineTrack On Local Error GoTo ErrLine 'obtain the track from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objTrack = gbl_objDexterObject Else: Exit Sub End If 'obtain existing group information If Not objTrack Is Nothing Then With objTrack 'get blank Call objTrack.AreYouBlank(nBlank) 'get muted Call gbl_objDexterObject.GetMuted(nMuted) 'get start /stoptime Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime) End With End If 'hide the dialog Load frmTrack frmTrack.Visible = False 'update the form with the existing information With frmTrack .txtPriority = 0 'methodology not available .txtStartTime = CStr(dblStartTime) .txtStopTime = CStr(dblStopTime) .txtBlank.Text = CStr(nBlank) .txtMuted.Text = CStr(nMuted) End With 'display the dialog frmTrack.Caption = "Edit Track" frmTrack.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTrack.Visible = False: DoEvents Loop 'verify unload mode If frmTrack.UnloadMode = 1 Then Unload frmTrack: Set frmTrack = Nothing: Exit Sub End If 'query the dialog information With frmTrack If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If If IsNumeric(.txtPriority.Text) Then nPriority = CLng(.txtPriority.Text) End If If .txtBlank.Text <> vbNullString Then nBlank = CStr(.txtBlank.Text) End If If .txtMuted.Text <> vbNullString Then nMuted = CStr(.txtMuted.Text) End If End With 'update the timeline info given the new information If Not gbl_objDexterObject Is Nothing Then 'set the muted state Call gbl_objDexterObject.SetMuted(nMuted) 'set the media times Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime) End If 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'destroy the dialog Unload frmTrack: Set frmTrack = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTrans_Click ' * procedure description: Occurs when the transition popup context menu is invoked ' * ' ****************************************************************************************************************************** Private Sub mnuTrans_Click() On Local Error GoTo ErrLine 'set menu state If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Children = 0 Then If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False If mnuTransCollapse.Enabled = False Then mnuTransCollapse.Enabled = True ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then If mnuTransExpand.Enabled = False Then mnuTransExpand.Enabled = True If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False Else If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTransCollapse_Click ' * procedure description: Occurs when the transition popup context menu's 'Collapse' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTransCollapse_Click() On Local Error GoTo ErrLine 'collapse the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = True Then tvwSimpleTree.SelectedItem.Expanded = False If mnuTransExpand.Enabled = False Then mnuTransExpand.Enabled = True If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTransExpand_Click ' * procedure description: Occurs when the transition popup context menu's 'Expand' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTransExpand_Click() On Local Error GoTo ErrLine 'expand the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.SelectedItem.Expanded = False Then tvwSimpleTree.SelectedItem.Expanded = True If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False If mnuTransCollapse.Enabled = False Then mnuTransCollapse.Enabled = True End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTransDelete_Click ' * procedure description: Occurs when the transition popup context menu's 'Delete' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTransDelete_Click() Dim objTransition As AMTimelineTrans On Local Error GoTo ErrLine 'obtain the transition from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objTransition = gbl_objDexterObject Else: Exit Sub End If 'remove the item Call gbl_objDexterObject.RemoveAll Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key) Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index) If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing 'clean-up & dereference If Not objTransition Is Nothing Then Set objTransition = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: mnuTransEdit_Click ' * procedure description: Occurs when the transition popup context menu's 'Edit' option is elected ' * ' ****************************************************************************************************************************** Private Sub mnuTransEdit_Click() Dim nCutsOnly As Long Dim nSwapInputs As Long Dim dblCutpoint As Double Dim dblStopTime As Double Dim dblStartTime As Double Dim bstrTransitionCLSID As String Dim objTransition As AMTimelineTrans On Local Error GoTo ErrLine 'obtain the transition from the global timeline object 'which is reset when the user clicks a node on the tree If Not gbl_objDexterObject Is Nothing Then Set objTransition = gbl_objDexterObject Else: Exit Sub End If 'obtain existing transition information If Not objTransition Is Nothing Then With objTransition 'get cutpoint Call .GetCutPoint2(dblCutpoint) 'get cutsonly Call .GetCutsOnly(nCutsOnly) 'get swap inputs Call .GetSwapInputs(nSwapInputs) 'get start /stoptime Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime) 'get transition clsid bstrTransitionCLSID = gbl_objDexterObject.GetSubObjectGUIDB End With End If 'hide the dialog Load frmTransitions frmTransitions.Visible = False 'update the form with the existing information With frmTransitions .txtStartTime = CStr(dblStartTime) .txtStopTime = CStr(dblStopTime) .txtCutsOnly = CStr(nCutsOnly) .txtCutpoint = CStr(dblCutpoint) .txtSwapInputs = CStr(nSwapInputs) .cmbTransition = CStr(TransitionCLSIDToFriendlyName(bstrTransitionCLSID)) End With 'display the dialog frmTransitions.Caption = "Edit Transition" frmTransitions.Show vbModal, Me 'wait until the user closes the dialog Do Until frmTransitions.Visible = False: DoEvents Loop 'verify unload mode If frmTransitions.UnloadMode = 1 Then Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub End If 'query the dialog information With frmTransitions If IsNumeric(.txtStartTime.Text) Then dblStartTime = CDbl(.txtStartTime.Text) End If If IsNumeric(.txtStopTime.Text) Then dblStopTime = CDbl(.txtStopTime.Text) End If If IsNumeric(.txtCutpoint.Text) Then dblCutpoint = CDbl(.txtCutpoint.Text) End If If IsNumeric(.txtCutsOnly.Text) Then nCutsOnly = CLng(.txtCutsOnly.Text) End If If IsNumeric(.txtSwapInputs.Text) Then nSwapInputs = CLng(.txtSwapInputs.Text) End If If .cmbTransition <> vbNullString Then bstrTransitionCLSID = TransitionFriendlyNameToCLSID(CStr(.cmbTransition.Text)) End If End With 'update the transition info given the new information If Not gbl_objDexterObject Is Nothing Then 'set the transition clsid Call gbl_objDexterObject.SetSubObjectGUIDB(bstrTransitionCLSID) 'set the cutpoint Call objTransition.SetCutPoint2(dblCutpoint) 'set the cutsonly Call objTransition.SetCutsOnly(nCutsOnly) 'set the swap inputs Call objTransition.SetSwapInputs(nSwapInputs) 'set the media times Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime) End If 'refresh the ide Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) 'destroy the dialog Unload frmTransitions: Set frmTransitions = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- STATUSBAR EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: sbStatus_MouseMove ' * procedure description: Occurs when the user moves the mouse. ' * ' ****************************************************************************************************************************** Private Sub sbStatus_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine If Me.MousePointer = 9 Then Me.MousePointer = vbDefault If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: sbStatus_OLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub sbStatus_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'pass to the application drag drop handler Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: sbStatus_OLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub sbStatus_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) On Local Error GoTo ErrLine 'pass to the application drag over handler Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- LISTVIEW EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_AfterLabelEdit ' * procedure description: Occurs after a user edits the label of the currently selected Node or ListItem object. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_AfterLabelEdit(Cancel As Integer, NewString As String) On Local Error GoTo ErrLine Cancel = 1 Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_BeforeLabelEdit ' * procedure description: Occurs when a user attempts to edit the label of the currently selected ListItem or Node object. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_BeforeLabelEdit(Cancel As Integer) On Local Error GoTo ErrLine Cancel = 1 Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_Click ' * procedure description: Occurs when the user presses and then releases a mouse button over an object. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_Click() On Local Error GoTo ErrLine lstViewInfo.SetFocus Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_ColumnClick ' * procedure description: Occurs when a ColumnHeader object in a ListView control is clicked. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) On Local Error GoTo ErrLine 'sort listview contents by given column If ColumnHeader.Key = "Parameter" Then If lstViewInfo.Sorted = False Then lstViewInfo.Sorted = True If lstViewInfo.SortKey <> 0 Then lstViewInfo.SortKey = 0 If lstViewInfo.SortOrder <> lvwAscending Then lstViewInfo.SortOrder = lvwAscending ElseIf ColumnHeader.Key = "Value" Then If lstViewInfo.Sorted = False Then lstViewInfo.Sorted = True If lstViewInfo.SortKey <> 1 Then lstViewInfo.SortKey = 1 If lstViewInfo.SortOrder <> lvwAscending Then lstViewInfo.SortOrder = lvwAscending End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_GotFocus ' * procedure description: Occurs when an object receives the focus. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_GotFocus() On Local Error GoTo ErrLine 'reset the tooltip text lstViewInfo.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_ItemClick ' * procedure description: Occurs when a ListItem object is clicked or selected ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_ItemClick(ByVal Item As MSComctlLib.ListItem) On Local Error GoTo ErrLine 'display a tooltip for the item If Not Item Is Nothing Then If Item.ListSubItems.Count > 0 Then If Trim(Item.SubItems(1)) <> vbNullString Then lstViewInfo.ToolTipText = CStr(Trim(Item.Text) & " = " & Chr(34) & Trim(Item.SubItems(1)) & Chr(34)) Else: lstViewInfo.ToolTipText = vbNullString End If Else: lstViewInfo.ToolTipText = CStr(Item.Text) End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_LostFocus ' * procedure description: Occurs when an object loses the focus. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_LostFocus() On Local Error GoTo ErrLine 'reset the tooltip text lstViewInfo.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_MouseDown ' * procedure description: Occurs when the user presses the mouse button while an object has the focus. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'reset the tooltip text lstViewInfo.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_MouseMove ' * procedure description: Occurs when the user moves the mouse. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine If Me.MousePointer = 9 Then Me.MousePointer = vbDefault If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F 'disable tooltip if a hittest on the current position fails If lstViewInfo.HitTest(X, Y) Is Nothing Then lstViewInfo.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_OLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'pass to the application drag drop handler Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: lstViewInfo_OLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub lstViewInfo_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) On Local Error GoTo ErrLine 'pass to the application drag over handler Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- TREEVIEW EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_AfterLabelEdit ' * procedure description: Occurs after a user edits the label of the currently selected Node or ListItem object. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_AfterLabelEdit(Cancel As Integer, NewString As String) On Local Error GoTo ErrLine Cancel = 1 Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_BeforeLabelEdit ' * procedure description: Occurs when a user attempts to edit the label of the currently selected ListItem or Node object. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_BeforeLabelEdit(Cancel As Integer) On Local Error GoTo ErrLine Cancel = 1 Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_Click ' * procedure description: Occurs when the user presses and then releases a mouse button over an object. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_Click() On Local Error GoTo ErrLine 'set the root node selected if nothing is selected If tvwSimpleTree.SelectedItem Is Nothing Then If tvwSimpleTree.Nodes.Count > 0 Then If Not tvwSimpleTree.Nodes(1).Root Is Nothing Then Set tvwSimpleTree.SelectedItem = tvwSimpleTree.Nodes(1).Root End If End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_Collapse ' * procedure description: Generated when any Node object in a TreeView control is collapsed. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_Collapse(ByVal node As MSComctlLib.node) On Local Error GoTo ErrLine 'ensure selected If Not node Is Nothing Then Set tvwSimpleTree.SelectedItem = node Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_DblClick ' * procedure description: Occurs when you press and release a mouse button and then press and release it again over an object. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_DblClick() On Local Error GoTo ErrLine 'set focus tvwSimpleTree.SetFocus Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_Expand ' * procedure description: Occurs when a Node object in a TreeView control is expanded; that is, when its child nodes become visible. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_Expand(ByVal node As MSComctlLib.node) On Local Error GoTo ErrLine 'ensure selected If Not node Is Nothing Then Set tvwSimpleTree.SelectedItem = node Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_GotFocus ' * procedure description: Occurs when an object receives the focus. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_GotFocus() On Local Error GoTo ErrLine 'reset the tooltip text tvwSimpleTree.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_KeyDown ' * procedure description: Occurs when the user presses a key while an object has the focus. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_KeyDown(KeyCode As Integer, Shift As Integer) Dim objNode As node On Local Error GoTo ErrLine 'obtain the selected node on the treeview If Not tvwSimpleTree.SelectedItem Is Nothing Then Set objNode = tvwSimpleTree.SelectedItem Else: Exit Sub End If 'cross reference the object's guid with the module-level collection 'and attempt to obtain a match based on the unique identifier of the node If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then Select Case objNode.Tag Case "AMTimelineGroup" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineComp" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineTrack" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineSrc" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineTrans" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineEffect" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) End Select Else: Exit Sub End If If KeyCode = vbKeyDelete Then 'delete the item from the treeview If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then Select Case objNode.Tag Case "AMTimeline" 'dereference & clean-up the existing timeline If Not gbl_objTimeline Is Nothing Then Call ClearTimeline(gbl_objTimeline) 'dereference & clean-up application-level data If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing 'reinitalize application-level data Set gbl_objTimeline = New AMTimeline Set gbl_objFilterGraph = New FilgraphManager 'reinitalize the treeview/listview Call lstViewInfo.ListItems.Clear Call tvwSimpleTree.Nodes.Clear Case "AMTimelineGroup" 'dupe the functionality of a manual group delete Call mnuGroupDelete_Click Case "AMTimelineComp" 'dupe the functionality of a manual composition delete Call mnuCompDelete_Click Case "AMTimelineTrack" 'dupe the functionality of a manual track delete Call mnuTrackDelete_Click Case "AMTimelineSrc" 'dupe the functionality of a manual clip source delete Call mnuClipDelete_Click Case "AMTimelineTrans" 'dupe the functionality of a manual transition delete Call mnuTransDelete_Click Case "AMTimelineEffect" 'dupe the functionality of a manual effect delete Call mnuEffectDelete_Click End Select Else: Exit Sub End If End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_LostFocus ' * procedure description: Occurs when an object loses the focus. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_LostFocus() On Local Error GoTo ErrLine 'reset the tooltip text tvwSimpleTree.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_MouseDown ' * procedure description: Occurs when the user presses the mouse button while an object has the focus. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim objNode As node On Local Error GoTo ErrLine 'get the current node If Not tvwSimpleTree.HitTest(X, Y) Is Nothing Then Set objNode = tvwSimpleTree.HitTest(X, Y) Set tvwSimpleTree.SelectedItem = objNode ElseIf Not tvwSimpleTree.SelectedItem Is Nothing Then Set objNode = tvwSimpleTree.SelectedItem Else: Exit Sub End If 'cross reference the object's guid with the module-level collection 'and attempt to obtain a match based on the unique identifier of the node If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then Select Case objNode.Tag Case "AMTimelineGroup" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineComp" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineTrack" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineSrc" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineTrans" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) Case "AMTimelineEffect" Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key) End Select Else: Exit Sub End If 'display a tooltip for the item If Not objNode Is Nothing Then If Trim(objNode.Text) <> vbNullString Then tvwSimpleTree.ToolTipText = objNode.Text End If End If 'update the listview with the item's information If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then Select Case objNode.Tag Case "AMTimeline" Call RefreshListView(lstViewInfo, "AMTimeline", objNode.Key) Call ViewTimelineInfo(lstViewInfo, gbl_objTimeline) Case "AMTimelineGroup" Call RefreshListView(lstViewInfo, "AMTimelineGroup", objNode.Key) Call ViewGroupInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineComp" Call RefreshListView(lstViewInfo, "AMTimelineComp", objNode.Key) Call ViewCompositeInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineTrack" Call RefreshListView(lstViewInfo, "AMTimelineTrack", objNode.Key) Call ViewTrackInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineSrc" Call RefreshListView(lstViewInfo, "AMTimelineSrc", objNode.Key) Call ViewSourceInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineTrans" Call RefreshListView(lstViewInfo, "AMTimelineTrans", objNode.Key) Call ViewTransitionInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineEffect" Call RefreshListView(lstViewInfo, "AMTimelineEffect", objNode.Key) Call ViewEffectInfo(lstViewInfo, gbl_objDexterObject) End Select Else: Exit Sub End If 'derive the type of object given the tag of the node 'and popup the menu for the given object type.. If Button = 2 Then Select Case objNode.Tag Case "AMTimeline" PopupMenu mnuTimeline Case "AMTimelineGroup" PopupMenu mnuGroup Case "AMTimelineComp" PopupMenu mnuComp Case "AMTimelineTrack" PopupMenu mnuTrack Case "AMTimelineSrc" PopupMenu mnuClip Case "AMTimelineTrans" PopupMenu mnuTrans Case "AMTimelineEffect" PopupMenu mnuEffect End Select End If 'clean-up & dereference If Not objNode Is Nothing Then Set objNode = Nothing Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_MouseMove ' * procedure description: Occurs when the user moves the mouse. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine If Me.MousePointer = 9 Then Me.MousePointer = vbDefault If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F 'disable tooltip if a hittest on the current position fails If tvwSimpleTree.HitTest(X, Y) Is Nothing Then tvwSimpleTree.ToolTipText = vbNullString Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_NodeClick ' * procedure description: Occurs when a Node object is clicked. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_NodeClick(ByVal node As MSComctlLib.node) On Local Error GoTo ErrLine 'display a tooltip for the item If Not node Is Nothing Then If Trim(node.Text) <> vbNullString Then tvwSimpleTree.ToolTipText = node.Text End If End If 'update the listview with the item's information If Not gbl_colNormalEnum(node.Key) Is Nothing Then Select Case node.Tag Case "AMTimeline" Call RefreshListView(lstViewInfo, "AMTimeline", node.Key) Call ViewTimelineInfo(lstViewInfo, gbl_objTimeline) Case "AMTimelineGroup" Call RefreshListView(lstViewInfo, "AMTimelineGroup", node.Key) Call ViewGroupInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineComp" Call RefreshListView(lstViewInfo, "AMTimelineComp", node.Key) Call ViewCompositeInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineTrack" Call RefreshListView(lstViewInfo, "AMTimelineTrack", node.Key) Call ViewTrackInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineSrc" Call RefreshListView(lstViewInfo, "AMTimelineSrc", node.Key) Call ViewSourceInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineTrans" Call RefreshListView(lstViewInfo, "AMTimelineTrans", node.Key) Call ViewTransitionInfo(lstViewInfo, gbl_objDexterObject) Case "AMTimelineEffect" Call RefreshListView(lstViewInfo, "AMTimelineEffect", node.Key) Call ViewEffectInfo(lstViewInfo, gbl_objDexterObject) End Select Else: Exit Sub End If Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_OLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'pass to the application drag drop handler Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tvwSimpleTree_OLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub tvwSimpleTree_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) On Local Error GoTo ErrLine 'pass to the application drag over handler Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- TOOLBAR EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: tbMain_ButtonClick ' * procedure description: Occurs when the user clicks on a Button object in a Toolbar control. ' * ' ****************************************************************************************************************************** Private Sub tbMain_ButtonClick(ByVal Button As MSComctlLib.Button) On Local Error GoTo ErrLine Select Case LCase(Button.Key) Case "new" 'the functionality is identical to the file 'new' menu option Call mnuFileNewTimeline_Click Case "open" 'the functionality is identical to the file 'open' menu option Call mnuFileOpen_Click Case "save" 'the functionality is identical to the file 'saveas' menu option Call mnuFileSaveAs_Click Case "rewind" 'seek to the beggining of the media Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.StopGraph gbl_objQuartzVB.Position = 0 Case QTZStatusConstants.QTZStatusPaused gbl_objQuartzVB.Position = 0 Case QTZStatusConstants.QTZStatusStopped gbl_objQuartzVB.Position = 0 End Select Case "seekbackward" 'scrub backward by one second Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.StopGraph gbl_objQuartzVB.Position = gbl_objQuartzVB.Position - 1 Case QTZStatusConstants.QTZStatusPaused gbl_objQuartzVB.Position = gbl_objQuartzVB.Position - 1 Case QTZStatusConstants.QTZStatusStopped gbl_objQuartzVB.Position = gbl_objQuartzVB.Position - 1 End Select Case "play" 'update the button(s) With tbMain.Buttons .Item("New").Enabled = False .Item("Open").Enabled = False .Item("Save").Enabled = False .Item("Play").Enabled = True .Item("Pause").Enabled = True .Item("Stop").Enabled = True .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuTimeLinePlay.Enabled = False mnuTimeLineStop.Enabled = True mnuTimeLinePause.Enabled = True mnuTimeLineRenderTimeLine.Enabled = False mnuTimeLineClearRenderEngine.Enabled = False 'play the timeline for the client Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.StopGraph gbl_objQuartzVB.Position = 0 Call gbl_objQuartzVB.RunGraph Case QTZStatusConstants.QTZStatusPaused Call gbl_objQuartzVB.RunGraph Case QTZStatusConstants.QTZStatusStopped 'to prevent rendering out the timeline again (consequently resetting the media's 'position to zero before restarting audio/video playback) comment the line below.. Set gbl_objQuartzVB.FilterGraph = RenderTimeline(gbl_objTimeline) Call gbl_objQuartzVB.RunGraph End Select Case "pause" 'update the button(s) With tbMain.Buttons .Item("New").Enabled = True .Item("Open").Enabled = True .Item("Save").Enabled = True .Item("Play").Enabled = True .Item("Pause").Enabled = True .Item("Stop").Enabled = True .Item("Rewind").Enabled = True .Item("FastForward").Enabled = True .Item("SeekForward").Enabled = True .Item("SeekBackward").Enabled = True End With 'update the state on the popup context menu mnuTimeLinePlay.Enabled = True mnuTimeLineStop.Enabled = True mnuTimeLinePause.Enabled = False mnuTimeLineRenderTimeLine.Enabled = False mnuTimeLineClearRenderEngine.Enabled = False 'pause the timeline Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.PauseGraph Case QTZStatusConstants.QTZStatusPaused Call gbl_objQuartzVB.PauseGraph Case QTZStatusConstants.QTZStatusStopped Call gbl_objQuartzVB.PauseGraph End Select Case "stop" 'update the button(s) With tbMain.Buttons .Item("New").Enabled = True .Item("Open").Enabled = True .Item("Save").Enabled = True .Item("Play").Enabled = True .Item("Pause").Enabled = False .Item("Stop").Enabled = True .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuTimeLinePlay.Enabled = True mnuTimeLineStop.Enabled = False mnuTimeLinePause.Enabled = False mnuTimeLineRenderTimeLine.Enabled = True mnuTimeLineClearRenderEngine.Enabled = True 'stop the timeline Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.StopGraph Case QTZStatusConstants.QTZStatusPaused Call gbl_objQuartzVB.StopGraph Case QTZStatusConstants.QTZStatusStopped Call gbl_objQuartzVB.StopGraph End Select Case "seekforward" 'scrub forward by one second Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.PauseGraph gbl_objQuartzVB.Position = gbl_objQuartzVB.Position + 1 Case QTZStatusConstants.QTZStatusPaused Call gbl_objQuartzVB.PauseGraph gbl_objQuartzVB.Position = gbl_objQuartzVB.Position + 1 Case QTZStatusConstants.QTZStatusStopped Call gbl_objQuartzVB.PauseGraph gbl_objQuartzVB.Position = gbl_objQuartzVB.Position + 1 End Select Case "fastforward" 'seek to the end of the media Select Case gbl_objQuartzVB.State Case QTZStatusConstants.QTZStatusPlaying Call gbl_objQuartzVB.PauseGraph gbl_objQuartzVB.Position = (gbl_objQuartzVB.StopTime - 0.01) Case QTZStatusConstants.QTZStatusPaused Call gbl_objQuartzVB.PauseGraph gbl_objQuartzVB.Position = (gbl_objQuartzVB.StopTime - 0.01) Case QTZStatusConstants.QTZStatusStopped Call gbl_objQuartzVB.PauseGraph gbl_objQuartzVB.Position = (gbl_objQuartzVB.StopTime - 0.01) End Select End Select Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tbMain_MouseMove ' * procedure description: Occurs when the user moves the mouse. ' * ' ****************************************************************************************************************************** Private Sub tbMain_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine If Me.MousePointer = 9 Then Me.MousePointer = vbDefault If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tbMain_OLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub tbMain_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'pass to the application drag drop handler Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: tbMain_OLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub tbMain_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) On Local Error GoTo ErrLine 'pass to the application drag over handler Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- COOLBAR EVENT HANDLERS ' ****************************************************************************************************************************** ' * procedure name: ctrlCoolBar_HeightChanged ' * procedure description: Occurrs when the Coolbar control's Height changes, if its Orientation is horizontal. Occurrs when the Coolbar control's Width changes, if its Orientation is vertical. ' * ' ****************************************************************************************************************************** Private Sub ctrlCoolBar_HeightChanged(ByVal NewHeight As Single) On Local Error GoTo ErrLine 'resize the container Call Form_Resize Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: ctrlCoolBar_MouseMove ' * procedure description: Occurs when the user moves the mouse. ' * ' ****************************************************************************************************************************** Private Sub ctrlCoolBar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine If Me.MousePointer = 9 Then Me.MousePointer = vbDefault If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: ctrlCoolBar_OLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub ctrlCoolBar_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) On Local Error GoTo ErrLine 'pass to the application drag drop handler Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: ctrlCoolBar_OLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub ctrlCoolBar_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) On Local Error GoTo ErrLine 'pass to the application drag over handler Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State) Exit Sub ErrLine: Err.Clear Exit Sub End Sub ' ************************************************************************************************************************************** ' * PRIVATE INTERFACE- APPLICATION METHODS ' ****************************************************************************************************************************** ' * procedure name: AppOLEDragDrop ' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual. ' * ' ****************************************************************************************************************************** Private Sub AppOLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim nCount As Long Dim bstrFileName As String Dim objLocalTimeline As AMTimeline On Local Error GoTo ErrLine 'assign mouse state Screen.MousePointer = vbHourglass For nCount = 1 To Data.Files.Count bstrFileName = Data.Files(nCount) If Len(bstrFileName) > 4 Then 'verify the file extension is valid If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then 'at least it's been named an xtl file, proceed to attempt an import.. Set objLocalTimeline = New AMTimeline Call RestoreTimeline(objLocalTimeline, bstrFileName, DEXImportXTL) 'verify restoration If Not objLocalTimeline Is Nothing Then 'import succeeded; clean-up application scope If Not gbl_objTimeline Is Nothing Then 'dereference & clean-up timeline Call ClearTimeline(gbl_objTimeline) Set gbl_objTimeline = Nothing 'dereference & clean-up rendering If Not gbl_objQuartzVB Is Nothing Then Call gbl_objQuartzVB.StopGraph If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing If Not gbl_objRenderEngine Is Nothing Then Call gbl_objRenderEngine.ScrapIt If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing End If 'assign the local timeline to global scope Set gbl_objTimeline = objLocalTimeline 'render the timeline and derive a filter graph manager Set gbl_objFilterGraph = RenderTimeline(gbl_objTimeline) 'map the timeline to the userinterface Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum) mnuTimeLineClearRenderEngine.Enabled = False 'update the button(s) With tbMain.Buttons .Item("New").Enabled = True .Item("Open").Enabled = True .Item("Save").Enabled = True .Item("Play").Enabled = True .Item("Pause").Enabled = False .Item("Stop").Enabled = False .Item("Rewind").Enabled = False .Item("FastForward").Enabled = False .Item("SeekForward").Enabled = False .Item("SeekBackward").Enabled = False End With 'update the state on the popup context menu mnuTimeLinePlay.Enabled = True mnuTimeLineStop.Enabled = False mnuTimeLinePause.Enabled = True mnuTimeLineRenderTimeLine.Enabled = True mnuTimeLineClearRenderEngine.Enabled = True 'reset module-level filename gbl_bstrLoadFile = Data.Files(nCount) 'reset the caption on the application's main form bstrFileName = Mid(bstrFileName, InStrRev(bstrFileName, "\") + 1) Me.Caption = "DexterVB - " & bstrFileName End If End If 'clean-up & dereference If Not objLocalTimeline Is Nothing Then Set objLocalTimeline = Nothing Exit For End If End If Next 'reassign mouse state Screen.MousePointer = vbDefault Exit Sub ErrLine: Err.Clear 'reassign mouse state Screen.MousePointer = vbDefault Exit Sub End Sub ' ****************************************************************************************************************************** ' * procedure name: AppOLEDragOver ' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual. ' * ' ****************************************************************************************************************************** Private Sub AppOLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer) Dim nCount As Long Dim bstrFileName As String On Local Error GoTo ErrLine 'do not allow drag n' drop operations when rendering.. If Not gbl_objQuartzVB Is Nothing Then If gbl_objQuartzVB.State = QTZStatusPlaying Then Effect = vbDropEffectNone Exit Sub End If End If For nCount = 1 To Data.Files.Count bstrFileName = Data.Files(nCount) If Len(bstrFileName) > 4 Then 'verify the file extension is valid If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then 'at least it's been named an xtl file, proceed to attempt an import.. Effect = vbDropEffectCopy Else: If Effect <> vbDropEffectNone Then Effect = vbDropEffectNone End If End If Next Exit Sub ErrLine: Err.Clear Exit Sub End Sub